package com.dianshang.service.goods;

import com.dianshang.entity.PageResult;
import com.dianshang.pojo.goods.Sku;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public interface SkuService {

     List<Sku> findAll();

     PageResult<Sku> findPage(Integer page, Integer size);

     List<Sku> findList(Map<String, Object> searchMap);

     PageResult<Sku> findPage(Map<String, Object> searchMap, Integer page, Integer size);

     Sku findById(Integer id);

     void add(Sku sku);

     void update(Sku sku);

     void delete(Integer id);

     /**
      * 将商品价格加载到缓存中
      */
     Integer findPriceByIdRedis(String skuId);

     /**
      * 一键导入数据到ES
      * PUT /yuchen
      *         {
      *         "mappings": {
      *         "doc": {
      *         "properties": {
      *         "name": {
      *         "type": "text",
      *         "analyzer": "ik_smart"
      *         },
      *         "price": {
      *         "type": "integer"
      *         },
      *         "image": {
      *         "type": "text"
      *         },
      *         "createTime": {
      *         "type": "date"
      *         },
      *         "spuId": {
      *         "type": "text"
      *         },
      *         "categoryName": {
      *         "type": "keyword"
      *         },
      *         "brandName": {
      *         "type": "keyword"
      *         },
      *         "spec": {
      *         "type": "object"
      *         },
      *         "saleNum": {
      *         "type": "integer"
      *         },
      *         "commentNum": {
      *         "type": "integer"
      *         }
      *       }
      *     }
      *   }
      * }
      */
     Integer importES();

     /**
      * 搜索引擎(ElasticSearch)：
      * GET /yuchen/doc/_search
      * {
      *   "query": {
      *     "bool": {
      *       "must": [
      *         {
      *           "match": {
      *           "name": "手机" // 关键字
      *           }
      *         },
      *         {
      *           "term": {
      *               "categoryName": "手机" // 分类
      *           }
      *         },
      *         {
      *           "term": {
      *               "brandName": "华为" // 品牌
      *           }
      *         },
      *         {
      *           "term": {
      *               "spec.颜色.keyword": "红色" // 规格
      *           }
      *         }
      *       ],
      *       "filter": {
      *         "range": {
      *           "price": { // 价格
      *             "gt": 50000,
      *             "lte": 100000
      *           }
      *         }
      *       }
      *     }
      *   },
      *   "aggs": {
      *     "yuchen_category": {
      *       "terms": {
      *         "field": "categoryName" // 分组
      *       }
      *     }
      *   },
      *   "from": 0, // 从第一条数据开始查询
      *   "size": 30 // 要查询30条数据
      *   "sort": [
      *     {
      *       "price": { // 根据价格排序
      *         "order": "desc" // 倒叙
      *       }
      *     }
      *   ],
      *   "highlight": { // 名称高亮显示
      *     "fields": {
      *       "name": { // <font color='red'>手机</font>
      *         "pre_tags": "<font color='red'>",
      *         "post_tags": "</font>"
      *       }
      *     }
      *   }
      * }
      */
     Map search(Map<String,String> searchMap) throws IOException;

}